Micron Document

RNS
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
RNS (Reticulum Network Stack) is the reference implementation of Reticulum written in Python and maintained by Mark Qvist. It is licensed under the Reticulum License ↗. The Reticulum Protocol is defined by this reference implementation and the manual ↗.cite-ref-1[1]

RNS runs on pretty much any system that can run Python 3.

Contents
Installing

See Getting Started Fast ↗ in the manual. Essentially, pip install rns.

Use rnsd to run RNS as a background or foreground service.

Configuration

Each instance of RNS has its own configuration directory, the default being ~/.reticulum. You can specify a different configuration directory with rnsd --config=<config directory>.

On first run, a configuration file will be created in this directory (eg. ~/.reticulum/config) with a basic but functional configuration. To see all options, run rnsd --exampleconfig.

Shared instance

By default, the first program to launch RNS will create a shared instance that other programs can use.

When a shared instance crashes, any programs connected to it will lose their connection. If you are running several programs that use RNS, starting and terminating at different times, consider running a master rnsd instance as a service for other programs to use on demand.cite-ref-0-2-0[2]

Instead of rnsd, you can run lxmd (LXMF) or nomadnet (NomadNet) to combine their functionality:

rnsd handles networking and contains the transport node functionality.
lxmd handles messaging and contains the propagation node functionality. It starts rnsd automatically on launch.
nomadnet handles NomadNet's features including its page hosting functionality. It starts lxmd automatically on launch.

Each have their own configuration file where the functionality can be enabled/disabled.

If you only want to use a client like NomadNet or MeshChatX, you can just run that directly and it will automatically launch rnsd (if it is not already running).

Multiple instances

It is also possible to run multiple instaces of RNS on the same system by specifying a different configuration directory for each instance of rnsd with --config=<config directory>, or --rnsconfig=<config directory> for any of the utilities. Running multiple instances uses more memory.

Utilities

RNS includes a number of useful command-line utilities besides the rnsd daemon:

rncp – File transfer utility
rngit – Git repository node management
rnidIdentity and encryption utility
rnir – Distributed identity resolver (WIP)
rnodeconfRNode configuration and firmware utility
rnpathPath management utility
rnpkg – Package manager (WIP)
rnprobe – Probe utility
rnsh – Remote shell utility
rnstatus – Reticulum Network Stack status
rnx – Remote execution utility

Tips and tricks

Keeping up to date

Subscribe to PyPi's RSS feed to be notified of new releases:

https://pypi.org/rss/project/rns/releases.xml

Use rngit to fetch the version number of the latest release:

rngit release rns://7649a50d84610232d1416b41d2896aff/reticulum/reticulum list | tail -1 | awk '{print $NF}'

Update RNS over Reticulum

Once RNS is installed, you can use rngit to update RNS over Reticulum.

Security hardening

Reticulum apps may be isolated by running a primary rnsd instance as a non-privileged user, and running each isolated app as its own user with its own rnsd instance/configuration, connected to the primary instance over a BackboneInterface.

The primary instance has a system-local BackboneInterface serving the apps' instances, and external interfaces for connecting to the wider network. Each isolated app points to the RNS configuration of its own instance (eg. rngit --rnsconfig=<app's rns config>), which in turn connects to the primary instance over a BackboneInterface.

Running multiple instances like this uses more memory and adds an extra hop, but the performance penalty is negligible.

See also
References

cite-note-11. Reference Implementation, Manual. a8d24177d946de4f1f0a0fe1af9a1338:/page/blob.mu
cite-note-0-22. API Reference › Reticulum, Manual. a8d24177d946de4f1f0a0fe1af9a1338:/page/blob.mu

External links

• PyPI project

RNS utilities

rncprngitrnidrnirrnodeconfrnpathrnpkgrnprobernshrnstatusrnx

Reticulum Network Stack

Developer: Mark Qvist
Written in: Python
Platform: Linux, macOS, Windows, OpenBSD, Android, iOS
Repository: Aleph Git ↗